import java.util.Arrays;

public class code2 {
//    力扣 150 最长连续序列 (题目要求 o(n) 但是这里用了 排序 时间复杂度更低。。)
public int longestConsecutive(int[] nums) {
    if(nums.length == 0) {
        return 0;
    }
    // 观察题目，要求获取的是这个数组中能够得到的最长的连续数字
    // 首先可以现将数组进行排序操作
    Arrays.sort(nums);

    // 可以创建出一个 set 用来记录连续出现的数字长度
    // 定义一个 flag 作为 标记
    int flag = 1;
    int re = 0;

    // 通过 for 循环对数组进行遍历操作
    for(int i = 1; i < nums.length; i++) {
        // 尝试让当前的数字和前一个数字相减，只要相减得到的数字差 1 就说明这个这两个数字就是相连的
        if(nums[i] - nums[i - 1] == 1) {
            flag++;
        }else if(nums[i] - nums[i - 1] > 1){
            // 只要相减不为 1
            // 此时就将当前的标记 flag 修改为 1
            // 需要先将当前的 flag 的值记录到 set 中
            re = Math.max(re, flag);
            flag = 1;
        }
    }
    re = Math.max(re, flag);
    return re;
}
}
